package com.itany.corejava.day09;

import com.itany.corejava.day07.厨师;
import com.itany.corejava.day07.菜单;

import java.util.function.Function;
import java.util.function.Supplier;

public class TestLambda {

    public static void main(String[] args) {
//        f("abc", new CallBack() {
//            @Override
//            public void callback() {
//                System.out.println("callback代码111");
//                System.out.println("callback代码222");
//                System.out.println("callback代码333");
//
//            }
//        });
//
//
//        System.out.println("-----------------------------------------------");
//
        f("aaa", new CallBack() {
            @Override
            public void callback() {
                System.out.println("callback代码444");
                System.out.println("callback代码555");
            }

        });



//        f("abc",()->{
//            System.out.println("lambda代码1");
//        });
//
//
//        f("abc",()->System.out.println("lambda代码"));





//        CallBack2 callBack2=(String s)->{
//            System.out.println(s);
//        };


//        CallBack2 callBack2=(s)->{
//            System.out.println(s);
//        };


//        CallBack2 callBack2=s->{
//            System.out.println(s);
//        };
//        callBack2.callback("abc");


//        CallBack3 callBack3=(a,b)->{
//            System.out.println("a = " + a);
//            System.out.println("b = " + b);
//            return a+b;
//        };

//        CallBack3 callBack3=(a,b)->a+b;
//
//        System.out.println(callBack3.callback(4, 6));
//
//
//        菜单 c=get(()->{
//            return new 厨师();
//        });
//
//        c.烧肉();
//
//
//        Function<String,String> function=(s)->s.toUpperCase();
//
//        System.out.println(function.apply("abc"));

    }


    public static 菜单 get(Supplier<菜单> s){
        return s.get();
    }


    public static void f(String str,CallBack callBack){
        System.out.println("111111111");
        System.out.println("222222222");
        callBack.callback();
        System.out.println("333333333");
        System.out.println("str = " + str);;
        System.out.println("444444444");
        System.out.println("555555555");
    }

}


@FunctionalInterface
interface CallBack{
    public void callback();

}
@FunctionalInterface
interface CallBack2{
    public void callback(String s);
}



@FunctionalInterface
interface CallBack3{
    public int callback(int a,int b);
}





















